Minor bug fixes.
authoroliskoli <oliskoli>
Tue, 11 Sep 2007 20:06:31 +0000 (20:06 +0000)
committeroliskoli <oliskoli>
Tue, 11 Sep 2007 20:06:31 +0000 (20:06 +0000)
15 files changed:
win32/gui-2/GPSBabelGUI.dof
win32/gui-2/GPSBabelGUI.dpr
win32/gui-2/GPSBabelGUI.res
win32/gui-2/about.pas
win32/gui-2/common.pas
win32/gui-2/filter.dfm
win32/gui-2/filter.pas
win32/gui-2/gpsbabel.iss
win32/gui-2/main.dfm
win32/gui-2/main.pas
win32/gui-2/options.dfm
win32/gui-2/options.pas
win32/gui-2/readme.pas
win32/gui-2/select.pas
win32/gui-2/utils.pas

index fe1787057d4e714d0d4e6eec4c35bfcd8b76d54b..95ca2d6eb208616ed0d078975ac089c7dd2a9cba 100644 (file)
@@ -56,8 +56,8 @@ IncludeVerInfo=1
 AutoIncBuild=0\r
 MajorVer=0\r
 MinorVer=2\r
-Release=8\r
-Build=2\r
+Release=12\r
+Build=0\r
 Debug=0\r
 PreRelease=0\r
 Special=0\r
@@ -68,14 +68,16 @@ CodePage=1252
 [Version Info Keys]\r
 CompanyName=GPSBabel Makers\r
 FileDescription=GPSBabel Windows Frontend\r
-FileVersion=0.2.8.2\r
+FileVersion=0.2.12.0\r
 InternalName=\r
-LegalCopyright=(C) 2005,2006 Olaf Klein (o.b.klein@gpsbabel.org)\r
+LegalCopyright=(C) 2005-2007 Olaf Klein (o.b.klein@gpsbabel.org)\r
 LegalTrademarks=\r
 OriginalFilename=GPSBabelGUI.exe\r
 ProductName=GPSBabel\r
 ProductVersion=1.3.x\r
 Comments=\r
+[Excluded Packages]\r
+$(DELPHI)\Lib\dclusr40.bpl=Borland User\r
 [HistoryLists\hlConditionals]\r
 Count=1\r
 Item0=MSWINDOWS\r
index bd8b0f83b2d833407def4e993e9fcbccfbf2475c..5a9a8970878c2e67ba62a413d1b702cff7a34545 100644 (file)
@@ -1,6 +1,6 @@
 program GPSBabelGUI;\r
 {\r
-    Copyright (C) 2005 Olaf Klein, o.b.klein@gpsbabel.org\r
+    Copyright (C) 2005-2007 Olaf Klein, o.b.klein@gpsbabel.org\r
 \r
     This program is free software; you can redistribute it and/or modify\r
     it under the terms of the GNU General Public License as published by\r
@@ -47,6 +47,7 @@ begin
 {$IFOPT D+}\r
 //  UseLanguage('fr');                 // for testing\r
 {$ENDIF}\r
+\r
   Application.Initialize;\r
   Application.CreateForm(TfrmMain, frmMain);\r
   Application.CreateForm(TfrmReadme, frmReadme);\r
index 1a5d2408dc4478155379b92392c6b729db25ec9f..a1bfc0358297484eb7ea4145e074c75d1ede98e3 100644 (file)
Binary files a/win32/gui-2/GPSBabelGUI.res and b/win32/gui-2/GPSBabelGUI.res differ
index 68aa609737e298a4e911411ed0197ba8b41611b5..ecc118f9771be3de738e396d8103ce6ea9c622f0 100644 (file)
@@ -1,7 +1,7 @@
 unit about;\r
 \r
 {\r
-    Copyright (C) 2005,2006 Olaf Klein, o.b.klein@gpsbabel.org\r
+    Copyright (C) 2005-2007 Olaf Klein, o.b.klein@gpsbabel.org\r
 \r
     This program is free software; you can redistribute it and/or modify\r
     it under the terms of the GNU General Public License as published by\r
index 6fddbb42f1a936b8539e582d5337adbef88f450f..352485aae5326cda134b69afb6b19f8324a0a0a3 100644 (file)
@@ -1,7 +1,7 @@
 unit common;\r
 \r
 {\r
-    Copyright (C) 2005,2006 Olaf Klein, o.b.klein@gpsbabel.org\r
+    Copyright (C) 2005-2007 Olaf Klein, o.b.klein@gpsbabel.org\r
 \r
     This program is free software; you can redistribute it and/or modify\r
     it under the terms of the GNU General Public License as published by\r
@@ -72,7 +72,7 @@ const
   SREG_GLOBAL_LANG = 'Global:Language';\r
   \r
 const\r
-  Profile: array[0..11] of string =\r
+  Profile: array[0..12] of string =\r
   ('?',\r
    SREG_SOURCE_DIR,\r
    SREG_SOURCE_FMT,\r
@@ -84,7 +84,8 @@ const
    SREG_TARGET_SER,\r
    SREG_TARGET_FILE,\r
    SREG_SOURCE_FILE,\r
-   SREG_GLOBAL_LANG);\r
+   SREG_GLOBAL_LANG,\r
+   'Main:Layout');\r
 \r
 const\r
   GPSBabel_Domain = 'gpsbabel';\r
@@ -96,6 +97,7 @@ type
     Ext:   string;\r
     internal: string;\r
     Capas: Integer;\r
+    url: PChar;\r
   end;\r
 \r
 type\r
index c7b21a61e0bb448de60ea0297fae4703090473a3..a6a38a91c4e2e4b4571612a63d2835ce0f867d3b 100644 (file)
Binary files a/win32/gui-2/filter.dfm and b/win32/gui-2/filter.dfm differ
index 396e947e59d84142fb39f07a461678db652dba1a..82497865de90305cfe6e80c09a5e1ed014970ab6 100644 (file)
@@ -1,7 +1,7 @@
 unit filter;\r
 \r
 {\r
-    Copyright (C) 2005,2006 Olaf Klein, o.b.klein@gpsbabel.org\r
+    Copyright (C) 2005-2007 Olaf Klein, o.b.klein@gpsbabel.org\r
 \r
     This program is free software; you can redistribute it and/or modify\r
     it under the terms of the GNU General Public License as published by\r
@@ -108,6 +108,7 @@ type
       Shift: TShiftState);\r
     procedure btnHelpClick(Sender: TObject);\r
     procedure cbTransformClick(Sender: TObject);\r
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);\r
     procedure cbGPSfixClick(Sender: TObject);\r
   private\r
     { Private-Deklarationen }\r
@@ -175,6 +176,7 @@ var
 \r
 begin\r
   TranslateComponent(SELF);\r
+  RestoreBounds('filter_form', Self);\r
 \r
   cobTransformType.Items.Clear;\r
   cobTransformType.Items.Add(_('Waypoints') + ' -> ' + _('Routes'));\r
@@ -253,6 +255,9 @@ begin
 \r
   gbTransform.Enabled := (common.gpsbabel_vfmt >= '001.003.002');\r
   EnableAll(gbTransform, gbTransform.Enabled);\r
+\r
+  cobTransformType.Enabled := cbTransform.Checked;\r
+  cbTransformDelete.Enabled := cbTransform.Checked;\r
 end;\r
 \r
 function TfrmFilter.ValidateNumerical(AEdit: TCustomEdit; AMin, AMax: Extended): Boolean;\r
@@ -512,7 +517,8 @@ end;
 \r
 procedure TfrmFilter.cbTrackMergeClick(Sender: TObject);\r
 begin\r
-  if cbTrackMerge.Checked then cbTrackPack.Checked := False;\r
+  if cbTrackMerge.Checked then\r
+    cbTrackPack.Checked := False;\r
 end;\r
 \r
 procedure TfrmFilter.cbWayptMergeDistanceClick(Sender: TObject);\r
@@ -738,11 +744,17 @@ end;
 procedure TfrmFilter.cbTransformClick(Sender: TObject);\r
 begin\r
   cobTransformType.Enabled := cbTransform.Checked;\r
+  cbTransformDelete.Enabled := cbTransform.Checked;\r
+end;\r
+\r
+procedure TfrmFilter.FormClose(Sender: TObject; var Action: TCloseAction);\r
+begin\r
+  StoreBounds('filter_form', Self);\r
 end;\r
 \r
 procedure TfrmFilter.cbGPSfixClick(Sender: TObject);\r
 begin\r
-  cobGPSfixes.Enabled := cbGPSfix.Checked;\r
+  cobGPSfixes.Enabled := TCheckBox(Sender).Checked;\r
 end;\r
 \r
 end.\r
index c86cf33d42e15756600ec9accae340fe32ee38cd..d703b5e7afc1b0919f8950ffc65be3a06e636f38 100644 (file)
@@ -1,14 +1,14 @@
 ; Script generated by the Inno Setup Script Wizard.\r
 ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!\r
 \r
-#define Version "1.3.2"\r
-#define Release ""\r
+#define Version "1.3.5"\r
+#define Release "-beta20070807"\r
 \r
 [Setup]\r
 AppName=GPSBabel\r
 AppVerName=GPSBabel-{#Version}{#Release}\r
 RestartIfNeededByRun=false\r
-DefaultDirName={pf}\GPSBabel-{#Version}\r
+DefaultDirName={pf}\GPSBabel\r
 ShowLanguageDialog=auto\r
 OutputDir=C:\TEMP\r
 SourceDir=.\\r
@@ -48,10 +48,6 @@ Source: ..\..\gpsbabel.exe; DestDir: {app}; Flags: comparetimestamp ignoreversio
 Source: ..\..\gpsbabel.html; DestDir: {app}; Tasks: ; Languages: \r
 Source: ..\..\COPYING; DestDir: {app}\r
 Source: ..\..\README.contrib; DestDir: {app}\r
-Source: ..\..\README.igc; DestDir: {app}\r
-Source: ..\..\README.magnav; DestDir: {app}\r
-Source: ..\..\README.mapconverter; DestDir: {app}\r
-Source: ..\..\README.psp; DestDir: {app}\r
 Source: ..\..\AUTHORS; DestDir: {app}; Tasks: ; Languages: \r
 Source: ..\..\CHANGELOG; DestDir: {app}\r
 \r
index 09f755c0d2ab3342e38a625f0c8c1da438cec170..66d6ff535e11a32c77de6b3ac3ccad47f0246bf4 100644 (file)
Binary files a/win32/gui-2/main.dfm and b/win32/gui-2/main.dfm differ
index 05d6d4d1b688359ffa6ded45a57d501a4ae53510..9bb22873118041a93f012c9873c08964ad524816 100644 (file)
@@ -1,7 +1,9 @@
 unit main;\r
 \r
 {\r
-    Copyright (C) 2005,2006 Olaf Klein, o.b.klein@gpsbabel.org\r
+    GPSBabelGUI main unit/formular\r
+\r
+    Copyright (C) 2005-2007 Olaf Klein, o.b.klein@gpsbabel.org\r
 \r
     This program is free software; you can redistribute it and/or modify\r
     it under the terms of the GNU General Public License as published by\r
@@ -34,8 +36,8 @@ type
     cbRoutes: TCheckBox;\r
     cbTracks: TCheckBox;\r
     lbWhat: TLabel;\r
-    OpenDialog: TOpenDialog;\r
-    SaveDialog: TSaveDialog;\r
+    dlgFileOpen: TOpenDialog;\r
+    dlgFileSave: TSaveDialog;\r
     wptInputOK: TSpeedButton;\r
     ImageList1: TImageList;\r
     wptOutputOK: TSpeedButton;\r
@@ -44,13 +46,12 @@ type
     trkInputOK: TSpeedButton;\r
     trkOutputOK: TSpeedButton;\r
     ActionList1: TActionList;\r
-    acConvert: TAction;\r
+    acLetsGo: TAction;\r
     btnFilter: TBitBtn;\r
     acFilterSelect: TAction;\r
     btnProcess: TBitBtn;\r
-    memoOutput: TMemo;\r
     stbMain: TStatusBar;\r
-    MainMenu1: TMainMenu;\r
+    mnuMain: TMainMenu;\r
     mnuFile: TMenuItem;\r
     mnuExit: TMenuItem;\r
     acFileExit: TAction;\r
@@ -110,13 +111,34 @@ type
     mnuDebug: TMenuItem;\r
     Createoptionspo1: TMenuItem;\r
     acFileChangeLanguage: TAction;\r
-    Changelanguage1: TMenuItem;\r
+    mnuChangeLanguage: TMenuItem;\r
     N5: TMenuItem;\r
     acFileExportCSV: TAction;\r
     Createoptionscsv1: TMenuItem;\r
     File1: TMenuItem;\r
     Createoptionscsv2: TMenuItem;\r
     sdOptional: TSaveDialog;\r
+    PopupMenu: TPopupMenu;\r
+    acSelectAll: TAction;\r
+    pmnuSelectAll: TMenuItem;\r
+    acCopySelected: TAction;\r
+    pmnuCopySelected: TMenuItem;\r
+    pmnuClearOutput: TMenuItem;\r
+    pmnuOutputtoscreen: TMenuItem;\r
+    acOptionsSynthesizeShortNames: TAction;\r
+    pmnuSynthesizeshortnames: TMenuItem;\r
+    pmnu6: TMenuItem;\r
+    pmnu7: TMenuItem;\r
+    pmnuForsourceformat: TMenuItem;\r
+    pmuFortargetformat: TMenuItem;\r
+    pmnu8: TMenuItem;\r
+    pmnuLetsgo: TMenuItem;\r
+    memoOutput: TMemo;\r
+    pmnuEnablecharactersettransformation: TMenuItem;\r
+    acOptionsNukeTypes: TAction;\r
+    pmnuForceselectedGPSdatatypesnuketypesfilter: TMenuItem;\r
+    pmnu9: TMenuItem;\r
+    pmnuFilter: TMenuItem;\r
     procedure FormShow(Sender: TObject);\r
     procedure FormCreate(Sender: TObject);\r
     procedure OpenButtonClick(Sender: TObject);\r
@@ -127,7 +149,7 @@ type
     procedure cbRoutesClick(Sender: TObject);\r
     procedure cbTracksClick(Sender: TObject);\r
     procedure sbSaveFileClick(Sender: TObject);\r
-    procedure acConvertExecute(Sender: TObject);\r
+    procedure acLetsGoExecute(Sender: TObject);\r
     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);\r
     procedure acFilterSelectExecute(Sender: TObject);\r
     procedure acFileExitExecute(Sender: TObject);\r
@@ -136,7 +158,6 @@ type
     procedure FormClose(Sender: TObject; var Action: TCloseAction);\r
     procedure chbOutputDeviceClick(Sender: TObject);\r
     procedure acHelpReadmeExecute(Sender: TObject);\r
-    procedure mnuSynthesizeShortNamesClick(Sender: TObject);\r
     procedure edOutputFileKeyPress(Sender: TObject; var Key: Char);\r
     procedure cbInputFormatDeviceChange(Sender: TObject);\r
     procedure cbOutputFormatDeviceChange(Sender: TObject);\r
@@ -147,7 +168,6 @@ type
     procedure btnInputOptsClick(Sender: TObject);\r
     procedure acFileClearMemoExecute(Sender: TObject);\r
     procedure acFinalizeDropDownsExecute(Sender: TObject);\r
-    procedure mnuOptionsForceDataTypeClick(Sender: TObject);\r
     procedure acOptionsEnableCharactersetTransformationExecute(\r
       Sender: TObject);\r
     procedure acFileOutputToScreenExecute(Sender: TObject);\r
@@ -156,6 +176,11 @@ type
     procedure acFileExportCSVExecute(Sender: TObject);\r
     procedure cbOutputDeviceChange(Sender: TObject);\r
     procedure cbInputDeviceChange(Sender: TObject);\r
+    procedure acSelectAllExecute(Sender: TObject);\r
+    procedure acCopySelectedExecute(Sender: TObject);\r
+    procedure PopupMenuPopup(Sender: TObject);\r
+    procedure acOptionsSynthesizeShortNamesExecute(Sender: TObject);\r
+    procedure acOptionsNukeTypesExecute(Sender: TObject);\r
   private\r
     { Private-Deklarationen }\r
     FCaps: TCapabilities;\r
@@ -282,9 +307,10 @@ end;
 procedure TfrmMain.FormCreate(Sender: TObject);\r
 begin\r
   MakeFirstTranslation(Self);\r
-\r
   FFirstShow := True;\r
 \r
+  RestoreBounds('main_form', Self);\r
+\r
   TP_Ignore(mnuDebug, 'mnuDebug');\r
 {$IFOPT D-}\r
   mnuDebug.Visible := False;\r
@@ -296,8 +322,8 @@ begin
   FCaps := TCapabilities.Create;\r
   FOpts := TOptions.Create(FCaps);\r
 \r
-  OpenDialog.InitialDir := ReadProfile(OpenDialog.Tag);\r
-  SaveDialog.InitialDir := ReadProfile(SaveDialog.Tag);\r
+  dlgFileOpen.InitialDir := ReadProfile(dlgFileOpen.Tag);\r
+  dlgFileSave.InitialDir := ReadProfile(dlgFileSave.Tag);\r
 \r
   if not ComboBoxSelect(cbInputDevice, ReadProfile(cbInputDevice.Tag)) then\r
     cbInputDevice.ItemIndex := 0;\r
@@ -346,8 +372,8 @@ begin
 \r
     FCaps.List := l;\r
     FOpts.List := l;\r
-    InitCombo(cbInputFormatDevice, False, True);\r
-    InitCombo(cbOutputFormatDevice, True, True);\r
+    InitCombo(cbInputFormatDevice, True, True);\r
+    InitCombo(cbOutputFormatDevice, False, True);\r
     InitCombo(cbInputFormat, True, False);\r
     InitCombo(cbOutputFormat, False, False);\r
   finally\r
@@ -407,18 +433,28 @@ end;
 procedure TfrmMain.OpenButtonClick(Sender: TObject);\r
 var\r
   s: string;\r
+  i: Integer;\r
 begin\r
-  OpenDialog.Filter := '';\r
-  OpenDialog.DefaultExt := '*.*';\r
+  dlgFileOpen.Filter := '';\r
+  dlgFileOpen.DefaultExt := '*.*';\r
 \r
   if (cbInputFormat.Text <> '') then\r
     s := cbInputFormat.Text + '|*.' + FCaps.GetExt(cbInputFormat.Text) + '|';\r
   s := s + _('All files|*.*');\r
 \r
-  OpenDialog.Filter := s;\r
-  if not SELF.OpenDialog.Execute then Exit;\r
+  dlgFileOpen.Filter := s;\r
+  if not SELF.dlgFileOpen.Execute then Exit;\r
+\r
+  edInputFile.Text := '';\r
+  for i := 0 to dlgFileOpen.Files.Count - 1 do\r
+  begin\r
+    s := dlgFileOpen.Files[i];\r
+    if (Pos('"', s) <> 0) or (Pos(' ', s) <> 0) or (Pos(',', s) <> 0) then\r
+      s := AnsiQuotedStr(s, '"');\r
+    if (edInputFile.Text <> '') then edInputFile.Text := edInputFile.Text + ', ';\r
+    edInputFile.Text := edInputFile.Text + s;\r
+  end;\r
 \r
-  edInputFile.Text := OpenDialog.FileName;\r
   CheckInput;\r
 end;\r
 \r
@@ -466,7 +502,6 @@ begin
     ac := acOptionsSourceFormat;\r
     acOptionsSourceFormat.Caption := _('Input') + ': ' + Format;\r
     btnInputOpts.Caption := '';\r
-//  ImageList1.GetBitmap(11, btnInputOpts.Glyph);\r
   end\r
   else begin\r
     edOutputOpts.Text := '';\r
@@ -475,7 +510,6 @@ begin
     ac := acOptionsTargetFormat;\r
     acOptionsTargetFormat.Caption := _('Output') + ': ' + Format;\r
     btnOutputOpts.Caption := '';\r
-//  ImageList1.GetBitmap(11, btnOutputOpts.Glyph);\r
   end;\r
 \r
   ac.Enabled := FOpts.HasFormatOpts(Format);\r
@@ -496,7 +530,7 @@ end;
 \r
 procedure TfrmMain.CheckInput;\r
 begin\r
-  acConvert.Enabled :=\r
+  acLetsGo.Enabled :=\r
   (cbWaypoints.Checked or cbRoutes.Checked or cbTracks.Checked)\r
   and\r
    (\r
@@ -542,33 +576,34 @@ procedure TfrmMain.sbSaveFileClick(Sender: TObject);
 var\r
   s: string;\r
 begin\r
-  SaveDialog.Filter := '';\r
-  SaveDialog.DefaultExt := '*.*';\r
+  dlgFileSave.Filter := '';\r
+  dlgFileSave.DefaultExt := '*.*';\r
 \r
   if (cbOutputFormat.Text <> '') then\r
     s := cbOutputFormat.Text + '|*.' + FCaps.GetExt(cbOutputFormat.Text) + '|';\r
   s := s + _('All files|*.*');\r
 \r
-  SaveDialog.Filter := s;\r
-  if not SELF.SaveDialog.Execute then Exit;\r
+  dlgFileSave.Filter := s;\r
+  if not SELF.dlgFileSave.Execute then Exit;\r
 \r
-  edOutputFile.Text := SaveDialog.FileName;\r
+  edOutputFile.Text := dlgFileSave.FileName;\r
   CheckInput;\r
 end;\r
 \r
-procedure TfrmMain.acConvertExecute(Sender: TObject);\r
+procedure TfrmMain.acLetsGoExecute(Sender: TObject);\r
 var\r
   cmdline: string;\r
-  list: TStrings;\r
+  list, files: TStrings;\r
   CSave: TCursor;\r
   str: TStream;\r
   s, tmp: string;\r
   i: Integer;\r
-  IFormat, OFormat: string;\r
+  IFormat, OFormat, IFiles: string;\r
   Fatal: Boolean;\r
+  sp: PChar;\r
 \r
 begin\r
-  btnProcess.Enabled := False;\r
+  acLetsGo.Enabled := False;\r
   try\r
     acFinalizeDropDownsExecute(nil);\r
 \r
@@ -588,20 +623,34 @@ begin
     if cbRoutes.Checked then cmdline := cmdline + ' -r';\r
     if cbTracks.Checked then cmdline := cmdline + ' -t';\r
 \r
-    if mnuSynthesizeShortNames.Checked then cmdline := cmdline + ' -s';\r
+    if acOptionsSynthesizeShortNames.Checked then cmdline := cmdline + ' -s';\r
 \r
     if chbInputDevice.Checked then\r
     begin\r
-      s := SysUtils.AnsiLowerCase(cbInputDevice.Text) + ':';\r
+      IFiles := '-f ' + SysUtils.AnsiLowerCase(cbInputDevice.Text) + ':';\r
 //    if (s = 'usb:') then\r
 //      s := s + '-1';\r
     end\r
       else\r
     begin\r
-      s := edInputFile.Text;\r
-      if not(FileExists(s)) then\r
-      raise eGPSBabelError.CreateFmt(_('File %s not found.'), [s]);\r
-      s := '"' + s + '"';\r
+     IFiles := '';\r
+     files := TStringList.Create;\r
+      try\r
+        if (edInputFile.Text[1] <> '"') then\r
+          files.CommaText := AnsiQuotedStr(edInputFile.Text, '"')\r
+        else\r
+          files.CommaText := edInputFile.Text;\r
+        for i := 0 to files.Count - 1 do\r
+        begin\r
+          s := files.Strings[i];\r
+          if not(FileExists(s)) then\r
+            raise eGPSBabelError.CreateFmt(_('File %s not found.'), [s]);\r
+          if (IFiles <> '') then IFiles := IFiles + ' ';\r
+          IFiles := IFiles + '-f ' + AnsiQuotedStr(s, '"');\r
+        end;\r
+      finally\r
+        files.Free;\r
+      end;\r
     end;\r
 \r
     // Input character set\r
@@ -612,17 +661,17 @@ begin
         [cmdline, cbInputLang.Text]);\r
 \r
     if (Trim(edInputOpts.Text) <> '') then\r
-      cmdline := Format('%s -i %s,%s -f %s',\r
-        [cmdline, IFormat, Trim(edInputOpts.Text), s])\r
+      cmdline := Format('%s -i %s,%s %s',\r
+        [cmdline, IFormat, Trim(edInputOpts.Text), IFiles])\r
     else\r
-      cmdline := Format('%s -i %s -f %s',\r
-        [cmdline, IFormat, s]);\r
+      cmdline := Format('%s -i %s %s',\r
+        [cmdline, IFormat, IFiles]);\r
 \r
     if mnuOptionsForceDataType.Checked then\r
     begin\r
       s := '';\r
       if not(cbWaypoints.Checked) then\r
-        s := s + ',waypoints'; \r
+        s := s + ',waypoints';\r
       if not(cbRoutes.Checked) then\r
         s := s + ',routes';\r
       if not(cbTracks.Checked) then\r
@@ -654,23 +703,30 @@ begin
       end;\r
     end\r
     else begin\r
-      s := edOutputFile.Text;\r
+      s := Trim(edOutputFile.Text);\r
+      if (s <> '') and (s[1] <> '"') then s := AnsiQuotedStr(s, '"');\r
+      if (CharCount(s, '"') mod 2 <> 0) then\r
+      begin\r
+        MessageDlg(_('Invalid usage of character ''"''!'), mtError, [mbOK], 0);\r
+        Exit;\r
+      end;\r
+      sp := PChar(s);\r
+      tmp := AnsiExtractQuotedStr(sp, '"');\r
+      if (tmp <> '') then s := tmp;\r
 \r
       if (s <> '-') then\r
       begin\r
         if FileExists(s) then\r
         begin\r
-          tmp := _('Warning');\r
-          if (Windows.MessageBox(SELF.Handle,\r
-            PChar(Format(_('File "%s" exists ! Overwrite ?'), [s])),\r
-            PChar(tmp), MB_YESNO) <> IDYES) then Exit;\r
+          if (MessageDlg(Format(_('File "%s" exists ! Overwrite ?'), [s]),\r
+            mtWarning, [mbYes, mbNO], 0) <> mrYes) then Exit;\r
         end\r
           else\r
         begin\r
           str := TFileStream.Create(s, fmCreate);\r
           str.Free;\r
         end;\r
-        s := '"' + s + '"';\r
+        s := AnsiQuotedStr(s, '"');\r
       end\r
       else\r
         s := '-';\r
@@ -691,8 +747,8 @@ begin
     CSave := Cursor;\r
     list := TStringList.Create;\r
     try\r
-      Cursor := crHourGlass;\r
-      Application.ProcessMessages;\r
+      Cursor := crHourGlass;       // doesn't work ???\r
+      Application.ProcessMessages; // doesn't work ???\r
       Sleep(50);\r
 \r
       if not gpsbabel(cmdline, list, @Fatal, False) then\r
@@ -718,7 +774,7 @@ begin
     end;\r
 \r
   finally\r
-    btnProcess.Enabled := True;\r
+    acLetsGo.Enabled := True;\r
   end;\r
 end;\r
 \r
@@ -875,16 +931,22 @@ procedure TfrmMain.StoreProfiles;
 var\r
   s: string;\r
 begin\r
-  s := SysUtils.ExtractFilePath(edInputFile.Text);\r
+  if (dlgFileOpen.Files.Count > 0) then\r
+    s := SysUtils.ExtractFilePath(dlgFileOpen.Files[0])\r
+  else\r
+    s := SysUtils.ExtractFilePath(dlgFileOpen.FileName);\r
   if (s <> '') then\r
-    StoreProfile(OpenDialog.Tag, s);\r
-  s := SysUtils.ExtractFilePath(edOutputFile.Text);\r
+    StoreProfile(dlgFileOpen.Tag, s);\r
+  if (edOutputFile.Text = '-') then\r
+    s := dlgFileSave.InitialDir\r
+  else\r
+    s := SysUtils.ExtractFilePath(edOutputFile.Text);\r
   if (s <> '') then\r
-    StoreProfile(SaveDialog.Tag, s);\r
+    StoreProfile(dlgFileSave.Tag, s);\r
   StoreProfile(cbInputFormat.Tag, cbInputFormat.Text);\r
   StoreProfile(cbOutputFormat.Tag, cbOutputFormat.Text);\r
   StoreProfile(cbInputDevice.Tag, cbInputDevice.Text);\r
-  StoreProfile(cbInputFormatDevice.Tag, cbInputFormatDevice.Text); \r
+  StoreProfile(cbInputFormatDevice.Tag, cbInputFormatDevice.Text);\r
   StoreProfile(cbOutputDevice.Tag, cbOutputDevice.Text);\r
   StoreProfile(cbOutputFormatDevice.Tag, cbOutputFormatDevice.Text);\r
   StoreProfile(edInputFile.Tag, edInputFile.Text);\r
@@ -894,6 +956,7 @@ end;
 procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);\r
 begin\r
   StoreProfiles;\r
+  StoreBounds('main_form', Self);\r
 end;\r
 \r
 procedure TfrmMain.chbOutputDeviceClick(Sender: TObject);\r
@@ -939,11 +1002,6 @@ begin
   end;\r
 end;\r
 \r
-procedure TfrmMain.mnuSynthesizeShortNamesClick(Sender: TObject);\r
-begin\r
-  mnuSynthesizeShortNames.Checked := not(mnuSynthesizeShortNames.Checked);\r
-end;\r
-\r
 procedure TfrmMain.edOutputFileKeyPress(Sender: TObject; var Key: Char);\r
 begin\r
   FOutHandmade := True;\r
@@ -1067,11 +1125,6 @@ begin
   acFinalizeDropDowns.Execute;\r
 end;\r
 \r
-procedure TfrmMain.mnuOptionsForceDataTypeClick(Sender: TObject);\r
-begin\r
-  mnuOptionsForceDataType.Checked := not(mnuOptionsForceDataType.Checked);\r
-end;\r
-\r
 procedure TfrmMain.acOptionsEnableCharactersetTransformationExecute(\r
   Sender: TObject);\r
 begin\r
@@ -1106,6 +1159,7 @@ begin
     edOutputFile.Color := edInputFile.Color;\r
     chbOutputDevice.Enabled := True;\r
     edOutputFile.Enabled := True;\r
+    edOutputFile.Text := '';\r
     HistoryChanged(edOutputFile, True);\r
     sbSaveFile.Enabled := True;\r
   end;\r
@@ -1360,4 +1414,37 @@ begin
   end;\r
 end;\r
 \r
+procedure TfrmMain.acSelectAllExecute(Sender: TObject);\r
+begin\r
+  memoOutput.SetFocus;\r
+  memoOutput.SelectAll;\r
+end;\r
+\r
+procedure TfrmMain.acCopySelectedExecute(Sender: TObject);\r
+begin\r
+  memoOutput.SetFocus;\r
+  memoOutput.CopyToClipboard;\r
+end;\r
+\r
+procedure TfrmMain.PopupMenuPopup(Sender: TObject);\r
+begin\r
+  pmnuSelectAll.Caption := dgettext('delphi', pmnuSelectAll.Caption);\r
+  pmnuCopySelected.Caption := dgettext('delphi', pmnuCopySelected.Caption);\r
+  pmnuClearOutput.Caption := dgettext('delphi', pmnuClearOutput.Caption);\r
+  \r
+  pmnuSelectAll.Enabled := (memoOutput.Lines.Count > 0);\r
+  pmnuCopySelected.Enabled := (memoOutput.Lines.Count > 0);\r
+  pmnuClearOutput.Enabled := (memoOutput.Lines.Count > 0);\r
+end;\r
+\r
+procedure TfrmMain.acOptionsSynthesizeShortNamesExecute(Sender: TObject);\r
+begin\r
+  acOptionsSynthesizeShortNames.Checked := not(acOptionsSynthesizeShortNames.Checked);\r
+end;\r
+\r
+procedure TfrmMain.acOptionsNukeTypesExecute(Sender: TObject);\r
+begin\r
+  acOptionsNukeTypes.Checked := not(acOptionsNukeTypes.Checked);\r
+end;\r
+\r
 end.\r
index a30cc841c7182acccbfd3df2c37f37f20866ac77..e9114954d2f614314e10de207a88080ea1869eb8 100644 (file)
Binary files a/win32/gui-2/options.dfm and b/win32/gui-2/options.dfm differ
index 20beb518caeb97f1d1766e4d52fbd77889f11dcd..da32e6bf68bc4d17c6e09430ab83fe136d7f037b 100644 (file)
@@ -1,7 +1,7 @@
 unit options;\r
 \r
 {\r
-    Copyright (C) 2005,2006 Olaf Klein, o.b.klein@gpsbabel.org\r
+    Copyright (C) 2005-2007 Olaf Klein, o.b.klein@gpsbabel.org\r
 \r
     This program is free software; you can redistribute it and/or modify\r
     it under the terms of the GNU General Public License as published by\r
@@ -40,6 +40,7 @@ type
     procedure FormKeyDown(Sender: TObject; var Key: Word;\r
       Shift: TShiftState);\r
     procedure btnOKClick(Sender: TObject);\r
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);\r
   private\r
     { Private declarations }\r
     FOpts: TStringList;\r
@@ -486,6 +487,7 @@ end;
 procedure TfrmOptions.FormCreate(Sender: TObject);\r
 begin\r
   TranslateComponent(Self);\r
+  RestoreBounds('options_form', Self);\r
 end;\r
 \r
 procedure TfrmOptions.btnHelpClick(Sender: TObject);\r
@@ -847,4 +849,9 @@ begin
   StoreOptionsToRegistry();\r
 end;\r
 \r
+procedure TfrmOptions.FormClose(Sender: TObject; var Action: TCloseAction);\r
+begin\r
+  StoreBounds('options_form', Self);\r
+end;\r
+\r
 end.\r
index 97f734c3092a6e3c089c2015ac01dcc651fe8bc6..35a1ed0272b827a8e551566b60556eb20c81e21e 100644 (file)
@@ -1,7 +1,7 @@
 unit readme;\r
 \r
 {\r
-    Copyright (C) 2005,2006 Olaf Klein, o.b.klein@gpsbabel.org\r
+    Copyright (C) 2005-2007 Olaf Klein, o.b.klein@gpsbabel.org\r
 \r
     This program is free software; you can redistribute it and/or modify\r
     it under the terms of the GNU General Public License as published by\r
index d1dddea029d05a66b4ede63744adc6e04dba11de..eb8f27d372dc1dc418e4bd31ca6b099e8867c683 100644 (file)
@@ -1,5 +1,23 @@
 unit select;\r
 \r
+{\r
+    Copyright (C) 2005-2007 Olaf Klein, o.b.klein@gpsbabel.org\r
+\r
+    This program is free software; you can redistribute it and/or modify\r
+    it under the terms of the GNU General Public License as published by\r
+    the Free Software Foundation; either version 2 of the License, or\r
+    (at your option) any later version.\r
+\r
+    This program is distributed in the hope that it will be useful,\r
+    but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+    GNU General Public License for more details.\r
+\r
+    You should have received a copy of the GNU General Public License\r
+    along with this program; if not, write to the Free Software\r
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA\r
+}\r
+\r
 interface\r
 \r
 uses\r
index 8dbb57f7456113de9fd391c2eddd9df2a87aebf9..94eded716f5e3cb4124908e77936d2b55f3352a7 100644 (file)
@@ -1,7 +1,7 @@
 unit utils;\r
 \r
 {\r
-    Copyright (C) 2005,2006 Olaf Klein, o.b.klein@gpsbabel.org\r
+    Copyright (C) 2005-2007 Olaf Klein, o.b.klein@gpsbabel.org\r
 \r
     This program is free software; you can redistribute it and/or modify\r
     it under the terms of the GNU General Public License as published by\r
@@ -27,7 +27,7 @@ interface
 uses\r
   gnugettext,\r
   Windows, SysUtils, Classes, StdCtrls, ComCtrls,\r
-  Registry, ShellAPI;\r
+  Registry, ShellAPI, Forms;\r
 \r
 type\r
   PBoolean = ^Boolean;\r
@@ -36,7 +36,10 @@ function gpsbabel(const CommandLine: string; Output: TStrings;
   Fatal: PBoolean = nil; OEMStrings: Boolean = True): Boolean;\r
 \r
 function GetShortName(const PathName: string): string;\r
-procedure StoreProfile(const Tag: Integer; const Value: string);\r
+\r
+procedure StoreProfile(const Tag: Integer; const Value: string); overload;\r
+procedure StoreProfile(const Tag, Value: string); overload;\r
+\r
 function ReadProfile(const Tag: Integer; const Default: string = ''): string; overload;\r
 function ReadProfile(const Name: string; const Default: string = ''): string; overload;\r
 \r
@@ -57,10 +60,14 @@ function readme_html_path: string;
 \r
 function HasUpDown(E: TEdit; var UpDown: TUpdown): Boolean;\r
 \r
+procedure StoreBounds(const Name: string; AForm: TForm);\r
+procedure RestoreBounds(const Name: string; AForm: TForm);\r
+\r
+function CharCount(const Str: string; const Ch: Char): Integer;\r
+\r
 implementation\r
 \r
 uses\r
-  Forms,\r
   common;\r
 \r
 function GetShortName(const PathName: string): string;\r
@@ -214,6 +221,22 @@ begin
   end;\r
 end;\r
 \r
+procedure StoreProfile(const Tag, Value: string);\r
+var\r
+  reg: TRegistry;\r
+begin\r
+  reg := TRegistry.Create;\r
+  try\r
+    reg.RootKey := HKEY_CURRENT_USER;\r
+    if reg.OpenKey('\SOFTWARE\GPSBabel', True) then\r
+    begin\r
+      reg.WriteString(Tag, Value);\r
+    end;\r
+  finally\r
+    reg.Free;\r
+  end;\r
+end;\r
+\r
 function ReadProfile(const Tag: Integer; const Default: string): string; // overload;\r
 var\r
   str: string;\r
@@ -425,10 +448,70 @@ begin
   end;\r
 end;\r
 \r
+procedure StoreBounds(const Name: string; AForm: TForm);\r
+var\r
+  str: string;\r
+begin\r
+  if (AForm = nil) then Exit;\r
+\r
+  if (AForm.WindowState = wsMaximized) then str := 'Y' else str := 'N';\r
+  str := Format('%s,%d,%d,%d,%d', [str,\r
+    AForm.Left, AForm.Top, AForm.Width, AForm.Height]);\r
+  StoreProfile(Name, str);\r
+end;\r
+\r
+procedure RestoreBounds(const Name: string; AForm: TForm);\r
+var\r
+  str: string;\r
+  idx: Integer;\r
+  lst: TStringList;\r
+  bds: TRect;\r
+begin\r
+  if (AForm = nil) then Exit;\r
+\r
+  str := ReadProfile(Name);\r
+  if (str = '') then Exit;\r
+\r
+  lst := TStringList.Create;\r
+  try\r
+    lst.Sorted := False;\r
+    lst.Duplicates := dupAccept;\r
+    lst.CommaText := str;\r
+    try\r
+      AForm.Position := poDesigned;\r
+\r
+      if (StrUpper(PChar(lst[0])) = 'Y') then AForm.WindowState := wsMaximized\r
+      else AForm.WindowState := wsNormal;\r
+\r
+      bds.Left := StrToInt(lst[1]);\r
+      bds.Top := StrToInt(lst[2]);\r
+      bds.Right := bds.Left + StrToInt(lst[3]);\r
+      bds.Bottom := bds.Top + StrToInt(lst[4]);\r
+\r
+      AForm.BoundsRect := bds;\r
+      \r
+    except\r
+      on E: Exception do;\r
+    end;\r
+  finally\r
+    lst.Free;\r
+  end;\r
+end;\r
+\r
+function CharCount(const Str: string; const Ch: Char): Integer;\r
+var\r
+  i, len: Integer;\r
+begin\r
+  Result := 0;\r
+  len := Length(Str);\r
+  for i := 1 to len do\r
+    if (Str[i] = Ch) then\r
+      Inc(Result);\r
+end;\r
 \r
 var\r
   hMutex: THandle;\r
-  \r
+\r
 initialization\r
 \r
   // Flag for InnoSetup\r